"""
收藏模型
映射数据库favorate表（注意表名拼写）
"""
from sqlalchemy import Column, Integer, DateTime, ForeignKey, Index
from sqlalchemy.orm import relationship

from app.models.base import BaseModel


class Favorite(BaseModel):
    """
    收藏模型类
    对应数据库中的favorate表（注意表名拼写）
    """
    
    __tablename__ = "favorate"  # 保持与node-server一致的表名
    
    user_id = Column(
        Integer, 
        ForeignKey('users.id', ondelete='CASCADE', onupdate='CASCADE'), 
        nullable=False,
        primary_key=True,
        comment='用户ID'
    )
    
    video_id = Column(
        Integer, 
        ForeignKey('videos_detail.id', ondelete='CASCADE', onupdate='CASCADE'), 
        nullable=False,
        primary_key=True,
        comment='视频ID'
    )
    
    # 关系
    user = relationship('User')
    video = relationship('Video', primaryjoin="Favorite.video_id==Video.id")
    
    # 索引
    __table_args__ = (
        # 单列索引优化查询性能
        Index('idx_user_id', 'user_id'),
        Index('idx_video_id', 'video_id'),
    )